package com.arpa.ntocc.common.service;

import com.arpa.ntocc.common.domain.dto.ResourceDTO;
import com.arpa.ntocc.common.domain.entity.Resource;
import com.arpa.ntocc.common.domain.vo.ResourceVO;
import com.arpa.ntocc.common.domain.vo.TreeData;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;

/**
 * <p>
 * 资源 服务类
 * </p>
 *
 * @author LEO
 * @since 2019-08-02
 */
public interface IResourceService extends IService<Resource> {

    /**
     * 保存
     * @param entity
     * @return
     */
    @Override
    boolean save(Resource entity);

    /**
     * 通过层级查询资源列表
     * @param level
     * @return
     */
    List<Resource> selectResourcesByLevel(int level);


    /**
     * 添加/修改 资源信息
     * TableId 注解存在更新记录，否插入一条记录
     * @param entity
     * @return
     */
    boolean saveOrUpdate(ResourceDTO entity);

    /**
     * 根据code更新
     * @param entity
     * @return
     */
    int updateByCode(Resource entity);

    /**
     * 批量删除
     * @param ids
     * @return
     */
    boolean deleteByIds(List<String> ids);


    /**
     * 树结构数据
     * @return 树结构数据
     */
    List<ResourceVO> treeData(String branchCode);


    /**
     * 设置角色资源树选中状态
     * @param data
     * @param roleId
     * @return
     */
    void setCheck(List<TreeData> data,String roleId);

    /**
     * 根绝用户code查询资源列表
     * @param partyCode
     * @return
     */
    List<Resource> listByPartyCode(String partyCode);

    /**
     * 根据用户code和机构code查询资源列表
     * @param partyCode 用户code
     * @param branchCode 机构code
     * @return
     */
    List<Resource> listByPartyCodeAndBranchCode(String partyCode,String branchCode );

    /**
     * 获取权限的permission字符串list
     * @param resourceList
     * @return
     */
    List<String> getAllPermissionList(List<Resource> resourceList);

    List<ResourceVO> getList(String 修改密码);
}
